package com.aterrizar.dominio.MongoDB.servicios;

import java.util.List;

import com.aterrizar.dominio.MongoDB.Collection;
import com.aterrizar.dominio.MongoDB.SistemDB;
import com.aterrizar.dominio.Neo4J.ManagerNeo;
import com.aterrizar.dominio.neo.servicios.ManagerAmigos;
import com.aterrizar.dominio.usuarios.Usuario;
import com.aterrizar.persistencia.servicios.UsuarioManager;
import com.mongodb.*;

public class ComentarioManager {

	public void agregarUsuarioMongo(Integer idUsuario){
		
		Collection<UsuarioMongo> colUsuarios = SistemDB.instance().collection(UsuarioMongo.class);
		colUsuarios.insert(new UsuarioMongo(idUsuario));
	}
	
	public UsuarioMongo getUsuario(Integer idUsuario){
        Collection<UsuarioMongo> colUsuarios = SistemDB.instance().collection(UsuarioMongo.class);
        	
        BasicDBObject query = new BasicDBObject();
        query.put("idUsuario", idUsuario);
        	
       net.vz.mongodb.jackson.DBCursor<UsuarioMongo> cursor = colUsuarios.getMongoCollection().find(query);
        	        
       if (cursor.hasNext()) {
            return (cursor.next());
        }
       
        return null;
    }

    
    public void agregarDestino(Integer idUsuario, Destino destino){
    	
        UsuarioMongo u = this.getUsuario(idUsuario);
        u.agregarDestino(destino);  
        this.actualizarUsuario(u);
    }

    
    public void actualizarUsuario(UsuarioMongo usuario){
    	Collection<UsuarioMongo> colUsuarios = SistemDB.instance().collection(UsuarioMongo.class);
    	colUsuarios.update(usuario.getIdMongo(), usuario);    	
    }

	public List<Destino> getDestinos(Integer idUsuario){
        UsuarioMongo u = this.getUsuario(idUsuario);
        return u.getDestinos();
    }
	
    public void agregarComentario(Integer idUsuario,Destino destino, Comentario comentario){
        UsuarioMongo u = this.getUsuario(idUsuario);
        u.agregarComentarioADestino(destino, comentario);  
        this.actualizarUsuario(u);
    }
    
    public List<Comentario> getComentarios(Integer idUsuario,Destino destino){
        UsuarioMongo u = this.getUsuario(idUsuario);
        return u.obtenerComentarios(destino);
    }
  
    public List<Comentario> getPerfil(Usuario idUsuario, Usuario idPedido){
        UsuarioMongo u = this.getUsuario(idUsuario.getId());
        
        List<String> amigos = new ManagerAmigos().amigos(idUsuario);
       
        boolean soyAmigo = amigos.contains(idPedido.getNombre()); 
        return u.getComentariosAmigos(soyAmigo);    	
    	
    }
}
